Network based storage is a common approach to backing up data, making large amounts of data accessible to multiple users. There are various forms of network storage, including network attached storage (NAS) and storage area network (SAN). In a NAS context, a storage server services file level requests from clients, whereas in a SAN context, a storage server services block level requests. Some storage servers are capable of servicing both file level requests and block level requests.
In general, a clustered storage system is a collection of nodes where each node may host one or more volumes that are linked into a global namespace. In one example of a clustered storage system, data objects are not stored on one volume, but are distributed across multiple volumes. To track all these data objects, a layer of abstraction is provided in a content repository such that instead of directly referencing a particular data object itself, a reference is made to this abstraction layer, which stores information that points to a location of the data object stored on a particular volume.
As a result of this abstraction, data objects within a clustered storage system are generally not referenced by their name provided in a directory namespace. Instead, each data object is assigned a name that is only identifiable by the abstraction layer. In particular, a file system in a clustered storage system uses a data object handle that points to a location of a data object. However, there are often many file system inconsistencies where the data object handle can become corrupted. For example, the data object handle can become corrupted and therefore point to an erroneous data object. Alternatively, the data object handle can point to a file that was previously deleted, thus a dangling data object handle. These file system inconsistencies can therefore lead to the access of incorrect data objects.